#ifndef NETCDFWRITER_H
#define NETCDFWRITER_H

//#include <netcdf.h>
#include "netCDF_4.9.2\\include\\netcdf.h"
#pragma comment(lib, "netCDF_4.9.2\\lib\\netcdf.lib")
#include <string>
#include <map>
#include <vector>
#include <iostream>

class NetCDFWriter {
    
private:
    int m_ncid = -1;  // 文件ID
    int m_status = NC_NOERR;
    std::map<std::string, int> m_dimIds;  // 维度名称到ID的映射
    std::map<std::string, int> m_varIds;   // 变量名称到ID的映射

public:
    NetCDFWriter();
    ~NetCDFWriter();

    // 文件操作
    void open(const std::string& filename);
    void close();

    // 维度定义
    void addDimension(const std::string& name, size_t length);

    // 变量定义
    void addVariable(const std::string& varname, nc_type type, 
                   const std::vector<std::string>& dim_names);

    // 全局属性写入（支持多种数据类型）
    void addGlobalAttribute(const std::string& name, double value);
    void addGlobalAttribute(const std::string& name, float value);
    void addGlobalAttribute(const std::string& name, int value);
    void addGlobalAttribute(const std::string& name, const std::string& value);

    // 变量数据写入（支持多种数据类型）
    void writeVariableData(const std::string& varname, const std::vector<double>& data);
    void writeVariableData(const std::string& varname, const std::vector<float>& data);
    void writeVariableData(const std::string& varname, const std::vector<int>& data);
    //void writeVariableData(const std::string& varname, const std::vector<std::string>& data);
};

#endif